// Keywords: 

initialize() {
	initializeMutationRate(1e-6);
	initializeMutationType("m1", 0.5, "f", 0.05);
	initializeGenomicElementType("g1", m1, 1.0);
	initializeGenomicElement(g1, 0, 99999);
	initializeRecombinationRate(1e-8);
}
1 early() {
	sim.addSubpop("p1", 1000);
}
6000 late() {
	// Calculate the fixation probability for a beneficial mutation
	s = 0.05;
	N = 1000;
	p_fix = (1 - exp(-2 * s)) / (1 - exp(-4 * N * s));
	
	// Calculate the expected number of fixed mutations
	n_gens = 1000;  // first 5000 ticks were burn-in
	mu = 1e-6;
	locus_size = 100000;
	expected = mu * locus_size * n_gens * 2 * N * p_fix;
	
	// Figure out the actual number of fixations after burn-in
	subs = sim.substitutions;
	actual = sum(subs.fixationTick >= 5000);
	
	// Print a summary of our findings
	cat("P(fix) = " + p_fix + "\n");
	cat("Expected fixations: " + expected + "\n");
	cat("Actual fixations: " + actual + "\n");
	cat("Ratio, actual/expected: " + (actual/expected) + "\n");
}
